Non-volatile memory systems such as Solid State Drives (SSDs) are finding new applications in consumer electronics. For example, they are replacing Hard Disk Drives (HDDs), which typically comprise rapidly rotating disks (platters). Non-volatile memories, sometimes referred to as ‘flash memories’ (for example, NAND and NOR flash devices), are used in media storage, cameras, mobile phones, mobile computers, laptop computers, USB flash drives, etc. Non-volatile memory provides a relatively reliable, compact, cost-effective, and easily accessible method of storing data when the power is off.
Error correcting codes (ECC) are used in memory systems such as NAND flash memory systems to ensure data integrity for the data that is stored in the memory system. ECC have become increasingly important for extending the life cycle of NAND (Negative-AND) flash memory systems. Low density parity-check (LDPC) codes have been utilized to improve the reliability of NAND flash memories. The LDPC codes that conventional encoders utilize are regular LDPC codes rather than irregular LDPC codes.